/* 

  keyOf Type 

  1. keyOf 可以让我们获取某种类型的所有键,让这个键成为新的(联合类型)/ 即返回的是一个联合类型
  2. 如果Type是使用字符串的键,那么联合类型出来是有number的

*/

type Point = {
  x: number
  y: number
}

type P = keyof Point

let p: P = 'x'
// 错误
// let p: P = {
//   x:1,y:1
// }

type Mapish = { [k: string]: boolean }
type M = keyof Mapish
// M = string | number
// 这是因为js对象键总是强制转换为字符串,所以 obj[0] 与 obj['0'] 是一致的

let o = { a: 1, b: 2 }

type N = keyof typeof o
